import adminListView from '$v/adminList'
//引入adminApi
import {
  addAdminRequest,
  findAdminRequest,
  deleteAdminRequest
} from '$a/admin'

//获取管理员列表视图渲染函数
const adminList = async (res) => {
  //查询管理员列表请求
  let findResult = null;
  try {
    findResult = await findAdminRequest()
    //二级路由渲染
    res.render(adminListView({
      adminList: findResult.data
    }))
  } catch (e) {
    //校验登录状态返回login登录
    if (!e.isLogin) {
      router.go("/login")
    }
    alert("查询失败:" + e.message)
  }

}


export default async (req, res) => {
  //渲染管理员列表 二级路由在await变为异步 没渲染获取不到dom 在函数前添加await
  await adminList(res)
  //添加管理员逻辑 
  //重新渲染页面后获取不到dom  设置事件委派  给document设置事件
  // const oSaveAdminBtn = document.querySelector("#saveAdminBtn")

  document.onclick = async function (e) {
    if (e.target.id === "saveAdminBtn") {
      const adminNameValue = document.adminForm.adminName.value.trim()
      const passwordValue = document.adminForm.password.value.trim()
      const rePasswordValue = document.adminForm.rePassword.value.trim()
      const oClose = document.querySelector("#close")
      if (!adminNameValue || !passwordValue || !rePasswordValue) {
        return alert("非法输入")
      }
      if (passwordValue !== rePasswordValue) {
        return alert("两次密码不一致")
      }
      //添加管理员列表请求
      try {
        await addAdminRequest({
          adminName: adminNameValue,
          password: passwordValue,
          regTime: new Date().toLocaleString()
        })

        alert("添加成功")
        //清空表单
        document.adminForm.reset()
        //点击关闭
        oClose.click()

        //添加成功后重新渲染列表
        adminList(res)
      } catch (e) {
        //校验登录状态返回login登录
        if (!e.isLogin) {
          router.go("/login")
        }
        alert("有异常," + e.message)
        //清空表单
        document.adminForm.reset()
      }
    }
    //点击删除管理员
    if (e.target.nodeName === 'BUTTON' && e.target.parentNode.nodeName === "TD") {
      const adminName = e.target.dataset.adminname
      try {
        await deleteAdminRequest(adminName)
        alert("删除成功")
        adminList(res)
      } catch (e) {
        alert("删除失败",e.message)
        //校验登录状态返回login登录
        if (!e.isLogin) {
          router.go("/login")
        }
      }

    }
  }
}